package com.javaex.book.dao;

import java.util.List;

import com.javaex.book.pojo.Order;

public interface OrderDao {

	/**
	 * 保存订单
	 * @param order 订单信息
	 * @return 表受影响行数
	 */
	Integer saveOrder(Order order);
	
	/**
	 * 查询与用户id关联的订单
	 * @param userId 用户id
	 * @param start 分页查询起始位置
	 * @param pageSize 页容量
	 * @return 所有订单
	 */
	List<Order> queryOrdersByUserId(Integer userId, Integer start, Integer pageSize);
	
	/**
	 * 查询订单数量
	 * 
	 * <p>如果 userId 有值，则查询出与该用户关联的订单数量<br/>
	 * 如果 userId 为 null，则查询出所有订单数量
	 * 
	 * @param userId 用户id
	 * @return 订单数量
	 */
	Integer countOrders(Integer userId);
	
	/**
	 * 根据订单id查询订单
	 * @param orderId 订单id
	 * @return 订单
	 */
	Order queryOrderById(String orderId);
	
	/**
	 * 修改订单状态
	 * @param orderId 订单id
	 * @param status 目标状态
	 * @return 数据库表受影响的行数
	 */
	Integer changeOrderStatus(String orderId, Integer status);
	
	/**
	 * 删除订单
	 * @param orderId 订单id
	 * @return 删除数据条数
	 */
	Integer deleteOrder(String orderId);
	
	/**
	 * 查寻全部订单
	 * @param start 分页查询起始位置
	 * @param pageSize 页容量
	 * @return 全部订单
	 */
	List<Order> queryOrders(Integer start, Integer pageSize);
}
